package com.iscas.tech.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.iscas.tech.entity.AtNewsinfo;
import com.iscas.tech.vo.AtNewsattachQueryVo;
import com.iscas.tech.vo.AtNewsinfoQueryVo;
import com.iscas.tech.vo.FileWithNews;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.List;

/**
 * 新闻信息表 Mapper 接口
 *
 * @author yangyi
 * @since 2020-10-26
 */
@Repository
public interface AtNewsinfoMapper extends BaseMapper<AtNewsinfo> {


    /**
     * 分页获取新闻列表
     *
     * @param offset   偏移量
     * @param limit    最大值
     * @param newsType 新闻类型{@link com.iscas.tech.bo.NewsType}
     * @return 分页对象
     */
    List<AtNewsinfoQueryVo> getNewsPageList(@Param("offset") Long offset,
                                            @Param("limit") Integer limit,
                                            @Param("newsType") Integer newsType);

    /**
     * @param newsType 新闻类型{@link com.iscas.tech.bo.NewsType}
     * @return 获取新闻总数
     */
    Long getNewsCount(@Param("newsType") Integer newsType);

    /**
     * 获取新闻及其附件信息
     *
     * @param id 新闻主键ID
     * @return 新闻及其附件信息
     * @throws Exception 查询信息
     */
    FileWithNews get(@Param("id") Integer id) throws Exception;

    /**
     * 获取记录人姓名
     *
     * @param id 记录人
     * @return 记录人姓名
     */
    String getCreateName(@Param("id") Integer id);

    /**
     * 获取新闻附件列表
     *
     * @param id 新闻主键ID
     * @return 新闻附件列表
     */
    List<AtNewsattachQueryVo> getFileList(@Param("id") Integer id);

    /**
     * @param param 新闻及其附件
     * @return 新增新闻
     */
    Boolean saveNews(@Param("param") FileWithNews param);

    /**
     * 删除新闻
     *
     * @param id 新闻主键ID
     * @return 删除结果
     */
    boolean deleteNewsInfo(@Param("id") Integer id);

    /**
     * 发布新闻
     *
     * @param id 新闻主键ID
     * @return 发布结果
     */
    boolean releaseNews(@Param("id") Integer id);
}
